In a NAND flash memory (hereinafter, referred to as a NAND memory), information is stored by a charge amount accumulated in a floating gate of a memory cell. A threshold voltage is determined according to the charge amount accumulated in a floating gate of a memory cell. The threshold voltage indicates a voltage with which a transistor of the memory cell is turned ON (the voltage with which a current begins to flow). That is, when a voltage equal to or more than the threshold voltage is applied to the memory cell, the current flows, and when a voltage less than the threshold voltage is applied, the current does not flow. In the NAND memory, a plurality of ranges of the threshold is defined, each range is allocated to a plurality of data values, and electrons are poured such that the threshold of the memory cell falls within a range corresponding to a data value. This enables each memory cell to store the data value.
For example, a memory cell of 3 bits/cell, which is capable of storing 3 bits per memory cell is used, eight voltage ranges are allocated to eight data values. At the time of write-in, the electrons are poured such that the charge amount accumulated in the floating gate of the memory cell becomes a charge amount corresponding to any one of the eight voltage ranges. Then, seven read out voltages for distinguishing the eight voltage ranges are applied, so that the data values stored in the memory cell can be read. Meanwhile, in the NAND memory, the charge amount in the floating gate may sometimes be changed from the time of write-in, and thus the data values stored in the memory cell may not be able to be read out correctly.